/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package videogest;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
//import sun.misc.Compare;

/**
 *
 * @author JAVA
 */
public class pruebaFerminProductos {

    public static void menuFermin() throws FileNotFoundException, IOException, ParseException {

        List<Alquiler> lalquiler = new ArrayList();
        int opc = 999;
        do {

            System.out.println("");
            System.out.println("0.- Salir.");
            System.out.println("1.- Operaciones con Peliculas.");
            System.out.println("2.- Operaciones con Videojuegos.");
            System.out.print("Introduzca opcion: ");
            try {
                opc = Teclado.leeEntero();
            } catch (Exception e) {
                opc = 999;
            }
            switch (opc) {
                case 0:
                    break;
                case 1:
                    //opPelicula();
                    break;
                case 2:
                    //opVideojuego();
                    break;

                default:
                    System.out.println("Opcion incorrecta ....");
            }
        } while (opc != 0);








    }

    
    public static Pelicula creaPelicula() throws FileNotFoundException, IOException {
        List<String> lactores = new ArrayList();
        List<String> lextras = new ArrayList();
        List<String> lformato = new ArrayList();
        int opc = 0;
        String codigo, nombre, sinopsis, genero, director, actor, extra, idioma;
        float precioVenta = 0, duracion = 0;
        Clasificacion precioAlquiler = null;
        Tipo tipo = null;


        System.out.println("================================================");
        System.out.println("|             CREACION DE PELICULAS             |");
        System.out.println("================================================");
        System.out.print("    Introduce nombre: ");
        nombre = Teclado.leeTexto();
        System.out.print("    Introduce sinopsis: ");
        sinopsis = Teclado.leeTexto();
        System.out.print("    Introduce genero: ");
        genero = Teclado.leeTexto();

        while (opc < 1 || opc > 3) {

            System.out.println("    1.-Adulto");
            System.out.println("    2.-Infantil");
            System.out.println("    3.-Novedad");
            System.out.print("    Introduce categoria: ");
            try {
                opc = Teclado.leeEntero();
            } catch (Exception e) {
            }
            if (opc == 1) {
                precioAlquiler = Clasificacion.ADULTO;
            } else {
                if (opc == 2) {
                    precioAlquiler = Clasificacion.INFANTIL;
                } else {

                    if (opc == 3) {
                        precioAlquiler = Clasificacion.NOVEDAD;
                    } else {
                        System.out.println("Introduce razon valida");
                    }
                }
            }
        }


        while (opc != 0) {
            System.out.print("    Introduce PrecioVenta: ");
            try {
                precioVenta = Teclado.leedatoFloat();
                opc = 0;
            } catch (Exception e) {
                System.out.println("Introduce un valor numerico");
            }

        }

        System.out.print("    Introduce Director: ");
        director = Teclado.leeTexto();

        opc = 999;
        while (opc != 0) {
            System.out.print("    Introduce Duracion: ");
            try {
                duracion = Teclado.leedatoFloat();
                opc = 0;
            } catch (Exception e) {
                System.out.println("Introduce un valor numerico");
            }

        }

        System.out.print("    Introduce actor (0 para no escribir mas): ");
        actor = Teclado.leeTexto();
        while (!actor.equals("0")) {
            lactores.add(actor);
            System.out.print("    Introduce actor (0 para no escribir mas): ");
            actor = Teclado.leeTexto();
        }

        System.out.print("    Introduce contenido extra(0 para no escribir mas): ");
        extra = Teclado.leeTexto();
        while (!extra.equals("0")) {
            lextras.add(extra);
            System.out.print("    Introduce contenido (0 para no escribir mas): ");
            extra = Teclado.leeTexto();
        }

        System.out.print("    Introduce Idioma(0 para no escribir mas): ");
        idioma = Teclado.leeTexto();
        while (!idioma.equals("0")) {
            lformato.add(idioma);
            System.out.print("    Introduce Idioma (0 para no escribir mas): ");
            idioma = Teclado.leeTexto();

        }

        opc = 0;
        while (opc < 1 || opc > 3) {
            System.out.println("    1.-DVD");
            System.out.println("    2.-BLURAY");
            System.out.println("    3.-BLURAY3D");
            System.out.print("    Introduce formato Pelicula: ");
            try {
                opc = Teclado.leeEntero();
            } catch (Exception e) {
            }
            if (opc == 1) {
                tipo = tipo.DVD;
            } else {
                if (opc == 2) {
                    tipo = tipo.BLURAY;
                } else {
                    if (opc == 3) {
                        tipo = tipo.BLURAY3D;
                    } else {
                        System.out.println("Introduce razon valida");
                    }
                }
            }
        }



        Pelicula pelicula = new Pelicula(nombre, sinopsis, genero, precioAlquiler, precioVenta, director, duracion, lactores, lextras, lformato, tipo);

        pelicula.alta();

        return pelicula;

    }

    public static void mostrarPelicula() throws IOException, ParseException {
        String nombre;

        System.out.println("================================================");
        System.out.println("|            CONSULTAR UNA PELICULA            |");
        System.out.println("================================================");
        System.out.print("    Introduce codigo de la pelicula: ");
        nombre = Teclado.leeTexto();


        Pelicula pelicula = Pelicula.damePelicula(nombre);

        if (pelicula == null) {
            System.out.println("    La pelicula con codigo " + nombre + " no existe");
        } else {
            System.out.println(pelicula);
        }
    }

    public static Videojuego creaVideojuego() throws FileNotFoundException, IOException {


        int opc = 0, numJugadores = 0;
        String nombre, sinopsis, genero, plataforma, distribuidor;

        float precioVenta = 0;
        Clasificacion precioAlquiler = null;
        Tipo tipo = null;

        System.out.println("================================================");
        System.out.println("|            CREACION DE VIDEOJUEGOS            |");
        System.out.println("================================================");
        System.out.print("    Introduce nombre: ");
        nombre = Teclado.leeTexto();
        System.out.print("    Introduce sinopsis: ");
        sinopsis = Teclado.leeTexto();
        System.out.print("    Introduce genero: ");
        genero = Teclado.leeTexto();

        while (opc < 1 || opc > 3) {
            System.out.println("    1.-Adulto");
            System.out.println("    2.-Infantil");
            System.out.println("    3.-Novedad");
            System.out.print("    Introduce categoria: ");
            try {
                opc = Teclado.leeEntero();

            } catch (Exception e) {
            }
            if (opc == 1) {
                precioAlquiler = Clasificacion.ADULTO;
            } else {
                if (opc == 2) {
                    precioAlquiler = Clasificacion.INFANTIL;
                } else {
                    if (opc == 3) {
                        precioAlquiler = Clasificacion.NOVEDAD;
                    } else {
                        System.out.println("Introduce razon valida");
                    }
                }
            }
        }

        while (opc != 0) {
            System.out.print("    Introduce PrecioVenta: ");
            try {
                precioVenta = Teclado.leedatoFloat();
                opc = 0;
            } catch (Exception e) {
                System.out.println("Introduce un valor numerico");
            }

        }

        System.out.print("    Introduce Plataforma: ");
        plataforma = Teclado.leeTexto();

        opc = 999;
        while (opc != 0) {
            System.out.print("    Introduce numero de jugadores: ");
            try {
                numJugadores = Teclado.leeEntero();
                opc = 0;
            } catch (Exception e) {
                System.out.println("Introduce un valor numerico");
            }

        }


        System.out.print("    Introduce Distribuidor: ");
        distribuidor = Teclado.leeTexto();


        Videojuego vj = new Videojuego(nombre, sinopsis, genero, precioAlquiler, precioVenta, plataforma, numJugadores, distribuidor);

        vj.alta();

        return vj;

    }

    public static void mostrarVideojuego() throws FileNotFoundException, IOException, ParseException {
        String nombre;

        System.out.println("================================================");
        System.out.println("|            CONSULTAR UN VIDEOJUEGO            |");
        System.out.println("================================================");
        System.out.println("Intdoduce codigo del videojuego: ");

        nombre = Teclado.leeTexto();

        Videojuego videojuego = Videojuego.dameVideojuego(nombre);

        if (videojuego == null) {
            System.out.println("El videojuego con codigo " + nombre + " no existe");
        } else {
            System.out.println(videojuego);
        }

    }

    public static Pelicula modificarPelicula() throws IOException, ParseException {

        List<String> lactores = new ArrayList();
        List<String> lextras = new ArrayList();
        List<String> lformato = new ArrayList();
        String codigo, actor, extra, idioma;
        int opcMod, opc;
        boolean res;
        Pelicula p = null;


        System.out.println("================================================");
        System.out.println("|            MODIFICAR UNA PELICULA            |");
        System.out.println("================================================");
        System.out.print("    Introduzca el codigo de la Pelicula: ");
        codigo = Teclado.leeTexto();

        p = Pelicula.damePelicula(codigo);

        if (p != null) {
            do {
                System.out.println("================================================");
                System.out.println("|            VALORES DE PELICULA                |");
                System.out.println("================================================");
                System.out.println("|----------   [0] Salir.                 -------|");
                System.out.println("|----------   [1] Nombre.                -------|");
                System.out.println("|----------   [2] Sinopsis.              -------|");
                System.out.println("|----------   [3] Genero.                -------|");
                System.out.println("|----------   [4] Precio Alquiler.       -------|");
                System.out.println("|----------   [5] Precio Venta.          -------|");
                System.out.println("|----------   [6] Director.              -------|");
                System.out.println("|----------   [7] Duracion.              -------|");
                System.out.println("|----------   [8] Actores.               -------|");
                System.out.println("|----------   [9] Contenidos Extras.     -------|");
                System.out.println("|----------  [10] Formato Audio.         -------|");
                System.out.println("|----------  [11] Tipo.                  -------|");
                System.out.println("=================================================");
                System.out.print("    Introduzca opcion: ");
                try {
                    opcMod = Teclado.leeEntero();
                } catch (Exception e) {
                    opcMod = 9999;
                }
                switch (opcMod) {
                    case 0:

                        break;
                    case 1:
                        System.out.println("El nombre actual es: " + p.getNombre());
                        System.out.print("Introduzca el nuevo nombre: ");
                        p.setNombre(Teclado.leeTexto());
                        System.out.println("Nombre cambiado a: " + p.getNombre());
                        break;
                    case 2:
                        System.out.println("La Sinopsis actual es: " + p.getSinopsis());
                        System.out.print("Introduzca la nueva sinopsis: ");
                        p.setSinopsis(Teclado.leeTexto());
                        System.out.println("Sinopsis cambiada a: " + p.getSinopsis());
                        break;
                    case 3:
                        System.out.println("El genero actual es: " + p.getGenero());
                        System.out.print("Introduzca el nuevo genero: ");
                        p.setGenero(Teclado.leeTexto());
                        System.out.println("Genero cambiado a: " + p.getGenero());
                        break;

                    case 4:
                        System.out.println("El precio Alquiler actual es de la categoria: " + p.getPrecioAlquiler().name());
                        System.out.println("Introduzca la nueva categoria Precio Venta: ");
                        res = true;
                        while (res) {

                            System.out.println("1.-Adulto");
                            System.out.println("2.-Infantil");
                            System.out.println("3.-Novedad");
                            System.out.println("Introduce categoria: ");
                            opc = 0;
                            try {
                                opc = Teclado.leeEntero();
                            } catch (Exception e) {
                            }
                            if (opc == 1) {
                                p.setPrecioAlquiler(Clasificacion.ADULTO);
                                res = false;
                            } else {
                                if (opc == 2) {
                                    p.setPrecioAlquiler(Clasificacion.INFANTIL);
                                    res = false;
                                } else {

                                    if (opc == 3) {
                                        p.setPrecioAlquiler(Clasificacion.NOVEDAD);
                                        res = false;
                                    } else {
                                        System.out.println("Introduce razon valida");
                                    }
                                }
                            }
                        }
                        System.out.println("Precio de Venta alquiler cambiado a categoria : " + p.getPrecioAlquiler().name());
                        break;

                    case 5:
                        System.out.println("El precio actual es de: " + p.getPrecioVenta());
                        System.out.print("Introduzca el nuevo Precio Venta: ");
                        res = true;
                        while (res) {
                            try {
                                p.setPrecioVenta(Teclado.leedatoFloat());
                                res = false;
                            } catch (Exception e) {
                            }
                        }
                        System.out.println("Precio de Venta cambiado a: " + p.getPrecioVenta());
                        break;



                    case 6:
                        System.out.println("El director actual es: " + p.getDirector());
                        System.out.print("Introduzca el nuevo director: ");
                        p.setDirector(Teclado.leeTexto());
                        System.out.println("Director cambiado a: " + p.getDirector());
                        break;

                    case 7:
                        System.out.println("La duracion actual es: " + p.getDuracion());
                        System.out.print("Introduzca la nueva duracion: ");
                        res = true;
                        while (res) {
                            try {
                                p.setDuracion(Teclado.leedatoFloat());
                                res = false;
                            } catch (Exception e) {
                            }
                        }
                        System.out.println("Duracion cambiada a: " + p.getDuracion());
                        break;

                    case 8:
                        System.out.println("Los actores actuales son: " + p.getActores());
                        System.out.println("Introduce actor (0 para no escribir mas): ");
                        actor = Teclado.leeTexto();
                        while (!actor.equals("0")) {
                            lactores.add(actor);
                            System.out.println("Introduce actor (0 para no escribir mas): ");
                            actor = Teclado.leeTexto();
                        }
                        p.setActores(lactores);
                        System.out.println("Actores cambiadados a: " + p.getActores());
                        break;


                    case 9:
                        System.out.println("Los contenidos extras actuales son: " + p.getContenidosExtras());
                        System.out.println("Introduce contenido extra(0 para no escribir mas): ");
                        extra = Teclado.leeTexto();
                        while (!extra.equals("0")) {
                            lextras.add(extra);
                            System.out.println("Introduce contenido (0 para no escribir mas): ");
                            extra = Teclado.leeTexto();
                        }
                        p.setContenidosExtras(lextras);
                        System.out.println("Contenidos extras cambiados a: " + p.getContenidosExtras());
                        break;


                    case 10:
                        System.out.println("Los idiomas son: " + p.getFormatoAudio());
                        System.out.println("Introduce Idioma(0 para no escribir mas): ");
                        idioma = Teclado.leeTexto();
                        while (!idioma.equals("0")) {
                            lformato.add(idioma);
                            System.out.println("Introduce Idioma (0 para no escribir mas): ");
                            idioma = Teclado.leeTexto();
                        }
                        p.setFormatoAudio(lformato);
                        System.out.println("Idiomas cambiados a: " + p.getFormatoAudio());
                        break;

                    case 11:
                        System.out.println("La pelicula es un : " + p.getTipo().name());
                        System.out.print("Seleccione un nuevo tipo : ");
                        res = true;
                        while (res) {

                            System.out.println("1.-DVD");
                            System.out.println("2.-BLURAY");
                            System.out.println("3.-BLURAY3D");
                            System.out.println("Introduce categoria: ");
                            opc = 0;
                            try {
                                opc = Teclado.leeEntero();
                            } catch (Exception e) {
                            }
                            if (opc == 1) {
                                p.setTipo(Tipo.DVD);
                                res = false;
                            } else {
                                if (opc == 2) {
                                    p.setTipo(Tipo.BLURAY);
                                    res = false;
                                } else {

                                    if (opc == 3) {
                                        p.setTipo(Tipo.BLURAY3D);
                                        res = false;
                                    } else {
                                        System.out.println("Introduce razon valida");
                                    }
                                }
                            }
                        }


                    default:
                        System.out.println("Opcion incorrecta ...");
                }

            } while (opcMod != 0);

            p.modificar();



        }


        return p;

    }

    public static Videojuego modificarVideojuego() throws FileNotFoundException, IOException, ParseException {

        String codigo, actor, extra, idioma;
        int opcMod, opc;
        boolean res;
        Videojuego v = null;

        System.out.println("================================================");
        System.out.println("|            MODIFICAR UN VIDEOJUEGO            |");
        System.out.println("================================================");
        System.out.print("    Introduzca el codigo del videojuego: ");
        codigo = Teclado.leeTexto();


        v = Videojuego.dameVideojuego(codigo);



        if (v != null) {

            do {
                System.out.println("================================================");
                System.out.println("|            VALORES DE VIDEOJUEGO             |");
                System.out.println("================================================");
                System.out.println("|----------   [0] Salir.                -------|");
                System.out.println("|----------   [1] Nombre.               -------|");
                System.out.println("|----------   [2] Sinopsis.             -------|");
                System.out.println("|----------   [3] Genero.               -------|");
                System.out.println("|----------   [4] Precio Alquiler.      -------|");
                System.out.println("|----------   [5] Precio Venta.         -------|");
                System.out.println("|----------   [6] Plataforma.           -------|");
                System.out.println("|----------   [7] Numero de Jugadores.  -------|");
                System.out.println("|----------   [8] Distribuidor.         -------|");
                System.out.println("================================================");
                System.out.print("    Introduzca opcion: ");
                try {
                    opcMod = Teclado.leeEntero();
                } catch (Exception e) {
                    opcMod = 9999;
                }
                switch (opcMod) {
                    case 0:
                        break;
                    case 1:
                        System.out.println("El nombre actual es: " + v.getNombre());
                        System.out.print("Introduzca el nuevo nombre: ");
                        v.setNombre(Teclado.leeTexto());
                        System.out.println("Nombre cambiado a: " + v.getNombre());
                        break;
                    case 2:
                        System.out.println("La Sinopsis actual es: " + v.getSinopsis());
                        System.out.print("Introduzca la nueva sinopsis: ");
                        v.setSinopsis(Teclado.leeTexto());
                        System.out.println("Sinopsis cambiada a: " + v.getSinopsis());
                        break;
                    case 3:
                        System.out.println("El genero actual es: " + v.getGenero());
                        System.out.print("Introduzca el nuevo género: ");
                        v.setGenero(Teclado.leeTexto());
                        System.out.println("Genero cambiado a: " + v.getGenero());
                        break;

                    case 4:
                        System.out.println("El precio Alquiler actual es de la categoria: " + v.getPrecioAlquiler().name());
                        System.out.println("Introduzca la nueva categoria Precio Venta: ");
                        res = true;
                        while (res) {

                            System.out.println("1.-Adulto");
                            System.out.println("2.-Infantil");
                            System.out.println("3.-Novedad");
                            System.out.println("Introduce categoria: ");
                            opc = 0;
                            try {
                                opc = Teclado.leeEntero();
                            } catch (Exception e) {
                            }
                            if (opc == 1) {
                                v.setPrecioAlquiler(Clasificacion.ADULTO);
                                res = false;
                            } else {
                                if (opc == 2) {
                                    v.setPrecioAlquiler(Clasificacion.INFANTIL);
                                    res = false;
                                } else {

                                    if (opc == 3) {
                                        v.setPrecioAlquiler(Clasificacion.NOVEDAD);
                                        res = false;
                                    } else {
                                        System.out.println("Introduce razon valida");
                                    }
                                }
                            }
                        }
                        System.out.println("Precio de Venta alquiler cambiado a categoria : " + v.getPrecioAlquiler().name());
                        break;

                    case 5:
                        System.out.println("El precio actual es de: " + v.getPrecioVenta());
                        System.out.print("Introduzca el nuevo Precio Venta: ");
                        res = true;
                        while (res) {
                            try {
                                v.setPrecioVenta(Teclado.leedatoFloat());
                                res = false;
                            } catch (Exception e) {
                            }
                        }
                        System.out.println("Precio de Venta cambiado a: " + v.getPrecioVenta());
                        break;

                    case 6:
                        System.out.println("La plataforma actual es: " + v.getPlataforma());
                        System.out.print("Introduzca la nueva plataforma: ");
                        v.setPlataforma(Teclado.leeTexto());
                        System.out.println("Plataforma cambiada a: " + v.getPlataforma());
                        break;

                    case 7:
                        System.out.println("El numero de jugadores actual es: " + v.getNumJugadores());
                        System.out.print("Introduzca el nuevo numero de jugadores: ");
                        res = true;
                        while (res) {
                            try {
                                v.setNumJugadores(Teclado.leeEntero());
                                res = false;
                            } catch (Exception e) {
                            }
                        }
                        System.out.println("Numero de jugadores cambiado a: " + v.getNumJugadores());
                        break;

                    case 8:
                        System.out.println("El distribuidor actual es: " + v.getDistribuidor());
                        System.out.print("Introduzca el nuevo distribuidor: ");
                        v.setDistribuidor(Teclado.leeTexto());
                        System.out.println("Distribuidor cambiado a: " + v.getDistribuidor());
                        break;

                    default:
                        System.out.println("Opcion incorrecta ...");
                }
            } while (opcMod != 0);

            v.modificar();


        }


        return v;
    }

    public static void alquilaPelicula(Cliente cliente, Pelicula pelicula) throws FileNotFoundException, IOException, ParseException {

        Alquiler alquiler;




        if (pelicula != null && cliente != null) {
            if (cliente.getSaldo() < 0) {
                System.out.println("Usted esta en numeros rojos, por favor recargue su tarjeta para realizar cualquier accion");
            } else {
                if (!pelicula.isAlquilado() && !pelicula.isBaja()) {
                    alquiler = new Alquiler(cliente, pelicula);
                    float precio = alquiler.calculaImporte();
                    if (cliente.getSaldo() - precio >= 0) {
                        pelicula.setAlquilado(true);
                        pelicula.modificar();
                        System.out.println(alquiler);
                        alquiler.alta();
                        cliente.disminuyeSaldo(precio);
                        cliente.modificar();
                        System.out.println("El tema te va a salir por " + alquiler.calculaImporte() + " Euros");
                    } else {
                        System.out.println("No dispone de saldo suficuente para alquilar la pelicula.");
                    }
                } else {
                    System.out.println("La pelicula que buscas la tenemos en la calle");
                }
            }
        } else {

            System.out.println("ERROR, el cliente o la pelicula no son validas.");
        }


    }

    public static void alquilaVideojuego(Cliente cliente, Videojuego videojuego) throws FileNotFoundException, IOException, ParseException {


        Alquiler alquiler;

        if (videojuego != null && cliente != null) {

            if (cliente.getSaldo() < 0) {
                System.out.println("Usted esta en numeros rojos, x favor recargue su tarjeta para realizar cualquier accion");
            } else {
                if (!videojuego.isAlquilado() && !videojuego.isBaja()) {
                    alquiler = new Alquiler(cliente, videojuego);
                    float precio = alquiler.calculaImporte();
                    if (cliente.getSaldo() - precio >= 0) {
                        videojuego.setAlquilado(true);
                        videojuego.modificar();
                        System.out.println(alquiler);
                        alquiler.alta();
                        cliente.disminuyeSaldo(precio);
                        cliente.modificar();
                        System.out.println("El tema te va a salir por " + alquiler.calculaImporte() + " Euros");
                    } else {
                        System.out.println("No dispone de saldo suficuente para alquilar el videojuego.");
                    }
                } else {
                    System.out.println("El videojuego que buscas la tenemos en la calle");
                }
            }
        } else {

            System.out.println("ERROR, el cliente o el videojuego no son validas.");
        }


    }

    public static void comprarPelicula(Cliente cliente, Pelicula pelicula) throws FileNotFoundException, IOException, ParseException {



        String codigop;
        String codigoc, codigo;
        Compra compra;


        if (pelicula != null && cliente != null) {
            if (cliente.getSaldo() < 0) {
                System.out.println("Usted esta en numeros rojos, x favor recargue su tarjeta para realizar cualquier accion");
            } else {
                if (!pelicula.isAlquilado() && !pelicula.isBaja()) {
                    compra = new Compra(pelicula, cliente);
                    float precio = compra.calculaImporte();
                    if (cliente.getSaldo() - precio >= 0) {
                        pelicula.setBaja(true);
                        pelicula.modificar();
                        System.out.println(compra);
                        compra.alta();
                        cliente.disminuyeSaldo(precio);
                        cliente.modificar();
                        System.out.println("El tema te va a salir por " + compra.calculaImporte() + " Euros");
                    } else {
                        System.out.println("No dispone de saldo suficuente para comprar la pelicula.");
                    }
                } else {
                    System.out.println("La pelicula que buscas la tenemos en la calle");
                }
            }
        } else {

            System.out.println("ERROR, el cliente o la pelicula no son validas.");
        }


    }

    public static void comprarVideojuego(Cliente cliente, Videojuego videojuego) throws FileNotFoundException, IOException, ParseException {

        String codigo;
        Compra compra;

        if (videojuego != null && cliente != null) {

            if (cliente.getSaldo() < 0) {
                System.out.println("Usted esta en numeros rojos, x favor recargue su tarjeta para realizar cualquier accion");
            } else {
                if (!videojuego.isAlquilado() && !videojuego.isBaja()) {
                    compra = new Compra(videojuego, cliente);
                    float precio = compra.calculaImporte();
                    if (cliente.getSaldo() - precio >= 0) {
                        videojuego.setBaja(true);
                        videojuego.modificar();
                        System.out.println(compra);
                        compra.alta();
                        cliente.disminuyeSaldo(precio);
                        cliente.modificar();
                        System.out.println("El tema te va a salir por " + compra.calculaImporte() + " Euros");
                    } else {
                        System.out.println("No dispone de saldo suficuente para comprar el videoJuego.");
                    }
                } else {
                    System.out.println("El videojuego que buscas la tenemos en la calle");
                }
            }
        } else {

            System.out.println("ERROR, el cliente o el Videojuego no son validas.");
        }
    }

    public static void devolverProducto(Cliente cliente, Producto producto) throws IOException, ParseException {

        String codigoc, codigop;
        Compra compra;
        long fechaDevolucion;
        long fechaActual;


        codigoc = cliente.getCodigo();
        codigop = producto.getCodigo();


        Alquiler alquiler = Alquiler.dameAlquiler(codigoc, codigop);

        if (alquiler != null) {
            if (alquiler.isDevuelto() == false) {
                alquiler.devolverProducto();
                alquiler.setDevuelto(true);
                alquiler.modificar();
            } else {
                System.out.println("El producto ya fue devuelto");
            }
        } else {
            System.out.println("Error , el codigo del producto o del cliente no son validos");
        }

    }

    public static void bajaPelicula() {
        String codigo;
        Pelicula pelicula = null;

        System.out.println("");
        System.out.println("================================================");
        System.out.println("|               BAJA DE PELICULA               |");
        System.out.println("================================================");
        System.out.print("    Introduzca el codigo de la pelicula: ");
        codigo = Teclado.leeTexto();

        try {
            try {
                pelicula = Pelicula.damePelicula(codigo);
            } catch (ParseException ex) {
                Logger.getLogger(pruebaFerminProductos.class.getName()).log(Level.SEVERE, null, ex);
            }
        } catch (IOException ex) {
            //Logger.getLogger(PruebaJesus.class.getName()).log(Level.SEVERE, null, ex);
            System.out.println("Error!! Al realizar la busqueda del cliente. Detalle!!");
            System.out.println(ex);
        }

        if (pelicula != null) {
            pelicula.setBaja(true);
            pelicula.modificar();
            System.out.println("La pelicula con codigo " + pelicula.getCodigo() + " ha sido dado de baja.");
        } else {
            System.out.println("La pelicula con codigo " + pelicula.getCodigo() + " no existe...");
        }
    }

    public static void altaPelicula() {
        String codigo;
        Pelicula pelicula = null;

        System.out.println("");
        System.out.println("================================================");
        System.out.println("|               ALTA DE PELICULA               |");
        System.out.println("================================================");
        System.out.print("    Introduzca el codigo de la pelicula: ");
        codigo = Teclado.leeTexto();

        try {
            try {
                pelicula = Pelicula.damePelicula(codigo);
            } catch (ParseException ex) {
                Logger.getLogger(pruebaFerminProductos.class.getName()).log(Level.SEVERE, null, ex);
            }
        } catch (IOException ex) {
            //Logger.getLogger(PruebaJesus.class.getName()).log(Level.SEVERE, null, ex);
            System.out.println("Error!! Al realizar la busqueda del cliente. Detalle!!");
            System.out.println(ex);
        }

        if (pelicula != null) {
            pelicula.setBaja(false);
            pelicula.modificar();
            System.out.println("La pelicula con codigo " + pelicula.getCodigo() + " ha sido dado de baja.");
        } else {
            System.out.println("La pelicula con codigo " + pelicula.getCodigo() + " no existe...");
        }
    }

    public static void bajaVideojuego() {
        String codigo;
        Videojuego videojuego = null;

        System.out.println("");
        System.out.println("================================================");
        System.out.println("|               BAJA DE VIDEOJUEGO             |");
        System.out.println("================================================");
        System.out.print("    Introduzca el codigo del videojuego: ");
        codigo = Teclado.leeTexto();

        try {
            try {
                videojuego = Videojuego.dameVideojuego(codigo);
            } catch (ParseException ex) {
                Logger.getLogger(pruebaFerminProductos.class.getName()).log(Level.SEVERE, null, ex);
            }
        } catch (IOException ex) {
            //Logger.getLogger(PruebaJesus.class.getName()).log(Level.SEVERE, null, ex);
            System.out.println("Error!! Al realizar la busqueda del cliente. Detalle!!");
            System.out.println(ex);
        }

        if (videojuego != null) {
            videojuego.setBaja(true);
            videojuego.modificar();
            System.out.println("El videojuego con codigo " + videojuego.getCodigo() + " ha sido dado de baja.");
        } else {
            System.out.println("El videojuego con codigo " + videojuego.getCodigo() + " no existe...");
        }
    }

    public static void altaVideojuego() {
        String codigo;
        Videojuego videojuego = null;

        System.out.println("");
        System.out.println("================================================");
        System.out.println("|               ALTA DE VIDEOJUEGO             |");
        System.out.println("================================================");
        System.out.print("    Introduzca el codigo del videojuego: ");
        codigo = Teclado.leeTexto();

        try {
            try {
                videojuego = Videojuego.dameVideojuego(codigo);
            } catch (ParseException ex) {
                Logger.getLogger(pruebaFerminProductos.class.getName()).log(Level.SEVERE, null, ex);
            }
        } catch (IOException ex) {
            //Logger.getLogger(PruebaJesus.class.getName()).log(Level.SEVERE, null, ex);
            System.out.println("Error!! Al realizar la busqueda del cliente. Detalle!!");
            System.out.println(ex);
        }

        if (videojuego != null) {
            videojuego.setBaja(false);
            videojuego.modificar();
            System.out.println("El videojuego con codigo " + videojuego.getCodigo() + " ha sido dado de baja.");
        } else {
            System.out.println("El videojuego con codigo " + videojuego.getCodigo() + " no existe...");
        }
    }
}
